1. Technical Field
The present invention relates generally to an improved data processing system, and in particular, to a method and apparatus for processing data. Still more particularly, the present invention provides a method and apparatus for managing the transfer of data to a receiver from a server.
2. Description of Related Art
The Internet, also referred to as an “internetwork”, is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. When capitalized, the term “Internet” refers to the collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols.
The Internet has become a cultural fixture as a source of both information and entertainment. Many businesses are creating Internet sites as an integral part of their marketing efforts, informing consumers of the products or services offered or providing other information seeking to engender brand loyalty. Many federal, state, and local government agencies are also employing Internet sites for informational purposes, particularly agencies which must interact with virtually all segments of society such as the Internal Revenue Service and secretaries of state. Providing informational guides and/or searchable databases of online public records may reduce operating costs. Further, the Internet is becoming increasingly popular as a medium for commercial transactions.
Currently, the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called simply “the Web”. Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web. In the Web environment, servers and clients effect data transaction using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files (e.g., text, still graphic images, audio, motion video, etc.). The information in various data files is formatted for presentation to a user by a standard page description language, the Hypertext Markup Language (HTML). In addition to basic presentation formatting, HTML allows developers to specify “links” to other Web resources identified by a Uniform Resource Locator (URL). A URL is a special syntax identifier defining a communications path to specific information. Each logical block of information accessible to a client, called a “page” or a “Web page”, is identified by a URL. The URL provides a universal, consistent method for finding and accessing this information, not necessarily for the user, but mostly for the user's Web “browser”. A browser is a program capable of submitting a request for information identified by an identifier, such as, for example, a URL. A user may enter a domain name through a graphical user interface (GUI) for the browser to access a source of content. The domain name is automatically converted to the Internet Protocol (IP) address by a domain name system (DNS), which is a service that translates the symbolic name entered by the user into an IP address by looking up the domain name in a database.
With respect to commerce on the Web, individual consumers and business use the Web to purchase various goods and services. In offering goods and services, some companies offer goods and services solely on the Web while others use the Web to extend their reach. In providing services and information, businesses and other organizations set up Web sites on servers to process requests from different users. These servers are connected to high speed networks. High-speed interfaces have become ubiquitous in server systems in the form of gigabit Ethernet, especially lately due to the introduction of copper-based gigabit adapters. In the near future, Ethernet speeds of 10 gigabits and even 40 gigabits will place even higher loads on servers. Shrinking chip prices and increasing central processing unit (CPU) speeds and functionality enable increasing amounts of intelligence to be placed on server network adapters. To support this intelligence, a certain amount of state must be maintained on the communication card to support the communication protocol. This state includes an area to buffer data while waiting for acknowledgments in reliable protocols such as TCP/IP, SNA, DECNET, and IPX. Given that the speeds of these future connection cards can exceed 10 gigabits per second and the time that data needs to be retained is a function of the round-trip acknowledgment time as well as the time-out delay for such reliable protocols, several gigabytes of memory may be required to support such a device in both host and communication card memory. Large amounts of memory and the logic associated with accessing the memory can add significant cost to a network communication card that is competing in a commodity environment. Additionally, the I/O bus between the host and network communication adapter must maintain this traffic as well as any control and header information to support this transfer or overall bandwidth will suffer.
Currently, when a server receives numerous requests, the resources of the server may be taxed causing a slow down in response time to users. For example, to transmit a data buffer in current generation, high-bandwidth communication adapter cards, the adapter is provided with a set of descriptors that include the physical system address and the length of data to be transferred. Some implementations may provide a base address on a well understood address boundary such as 4K and an offset. The data is then “held” in host memory until a protocol acknowledgment is received or a time-out period is exceeded and the data is resent.
In modern operating systems, the data is held in a “virtual copy” structure where a reference count keeps track of the number of instances that this buffer represents. The communication adapter transfers data to be transmitted from host memory to memory in the adapter staging the data for transfer onto the high-bandwidth network. With a reliable protocol such as TCP, data is considered acknowledged and the reference count is decremented. When the reference count for the memory buffer is zero, the buffer can be reused.
Systems that serve static content, such as file and Web servers, typically send popular content repeatedly. With conventional approaches to network transmission, each instance in which a given data item is sent is treated independently. In particular, if an item is sent five times, five copies of the item are required in the communication adapter's memory. Storing multiple copies of the same data in the memory of the communication adapter is inefficient and can be avoided given sufficient processing capabilities on the adapter. Thus, it would be advantageous to have an improved method, apparatus, and computer instructions for managing the transfer of data through a communication adapter.